// index.js
const api = require('../../utils/api/index');
Page({
  data: {
    phone: '',
    verifyCode: '',
    isLogin: true, // 控制显示登录还是注册表单
    isLoading: false,
    countDown: 0, // 倒计时
    isCounting: false // 是否正在倒计时
  },

  onLoad: function(options) {
    // 检查是否已登录
    const token = wx.getStorageSync('token');
    if (token) {
      // 已登录，跳转到角色选择页面
      wx.navigateTo({
        url: '/pages/role-select/index'
      });
    }
  },

  onShow() {
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().updateSelected();
    }
  },

  // 切换登录/注册表单
  switchForm: function() {
    this.setData({
      isLogin: !this.data.isLogin
    });
  },

  // 输入手机号
  inputPhone: function(e) {
    this.setData({
      phone: e.detail.value
    });
  },

  // 输入验证码
  inputVerifyCode: function(e) {
    this.setData({
      verifyCode: e.detail.value
    });
  },
  
  // 获取验证码
  getVerifyCode: function() {
    const { phone, isLogin } = this.data;
    
    // 验证手机号
    if (!phone || phone.length !== 11) {
      wx.showToast({
        title: '请输入正确的手机号',
        icon: 'none'
      });
      return;
    }
    
    // 显示加载中
    wx.showLoading({
      title: '发送中...',
    });
    
    // 根据当前表单状态确定验证码用途
    const purpose = isLogin ? 'login' : 'register';
    
    // 使用封装的request方法
    const app = getApp();
    app.request.post('/api/auth/sms/send/', {
      phone: phone,
      purpose: purpose // 添加purpose参数
    }, {
      loading: false // 已经手动显示loading
    }).then(res => {
      wx.hideLoading();
      console.log('验证码请求成功：', res);
      
      wx.showToast({
        title: '验证码已发送',
        icon: 'success'
      });
      
      // 开始倒计时
      this.setData({
        countDown: 60,
        isCounting: true
      });
      
      this.startCountDown();
    }).catch(err => {
      wx.hideLoading();
      console.error('验证码请求失败详情：', {
        error: err,
        status: err.status,
        message: err.message,
        detail: err.detail
      });
      
      wx.showToast({
        title: err.message || '发送验证码失败',
        icon: 'none'
      });
    });
  },
  
  // 倒计时函数
  startCountDown: function() {
    const countDownTimer = setInterval(() => {
      if (this.data.countDown <= 1) {
        clearInterval(countDownTimer);
        this.setData({
          countDown: 0,
          isCounting: false
        });
      } else {
        this.setData({
          countDown: this.data.countDown - 1
        });
      }
    }, 1000);
  },

  // 提交表单
  submitForm: function() {
    const { phone, verifyCode, isLogin } = this.data;
    
    // 简单的表单验证
    if (!phone || phone.length !== 11) {
      wx.showToast({
        title: '请输入正确的手机号',
        icon: 'none'
      });
      return;
    }
    
    if (!verifyCode || verifyCode.length !== 6) {
      wx.showToast({
        title: '请输入正确的验证码',
        icon: 'none'
      });
      return;
    }
    
    this.setData({ isLoading: true });
    
    // 使用封装的API进行登录
    api.auth.smsLogin({
      phone: phone,
      code: verifyCode
    }).then(res => {
      this.setData({ isLoading: false });
      
      // 登录成功
      wx.showToast({
        title: isLogin ? '登录成功' : '注册成功',
        icon: 'success'
      });
      
      // 存储token和用户信息
      if (res.token) {
        wx.setStorageSync('token', res.token);
      }
      if (res.user) {
        wx.setStorageSync('userInfo', res.user);
      }
      wx.setStorageSync('phone', phone);
      
      // 跳转到角色选择页面
      wx.navigateTo({
        url: '/pages/role-select/index'
      });
      
      // 清空输入信息
      this.setData({
        verifyCode: ''
      });
    }).catch(err => {
      this.setData({ isLoading: false });
      
      console.error('登录失败详情：', {
        error: err,
        status: err.status,
        message: err.message,
        detail: err.detail
      });
      
      wx.showToast({
        title: err.message || (isLogin ? '登录失败' : '注册失败'),
        icon: 'none'
      });
    });
  }
})